#include <stdio.h>
#include <stdlib.h>
#include <String.h>
#define FALSE -1
#define TRUE 1

typedef struct _stackSM {
    struct _stackSM* next;
    int state;
    char subMachine[10];
} StackSM;

typedef struct _stack {
    struct _stack* next;
    int value; //numero em char, @ para temp, # para nome
    int id; //0 para numero, id para nome, tempCount para temp
} Stack;

void iniciaPilhaSM (StackSM* pilha);
int vaziaSM(StackSM* pilha);
void empilhaSM(StackSM** pilha, char* subMaquina, int estado);
int desempilhaSM(StackSM** pilha, char* subMaquina);

void iniciaPilha(Stack* pilha);
int vazia(Stack* pilha);
void empilha(Stack** pilha, int value, int id);
int desempilha(Stack** pilha, int *id);
int topo(Stack* pilha);
int topoId(Stack* pilha);
